/*
 *  Reference.h
 *  Reference
 *
 *  Created by Hamza SHAWY and Jonathan SCHRODER on 10/10/07.
 *  Copyright 2007 __MyCompanyName__. All rights reserved.
 *
 */

 
#ifndef REFERENCE_H
#define REFERENCE_H

#include <iostream>
#include <string>
#include <list>


using std::list;
using std::string;


class Reference  
{
       public: // the BEHAVIOR of objects insatnce of the class Reference : the MEMBRE FUNCTIONS (METHODS) need to be accessed outside the class 

                Reference (); // the default constructor of the class Reference initializes data members to default values. 
				Reference ( int, int, string, string); // the regular constructor of the class Reference  
				Reference ( const Reference & ); // the copy constructor of the class Reference  
                ~Reference (); // the destructor can not be overloaded because there is only one for the class Reference
                
			    int getId() const; // returns the identifier  of the reference (object instance of the class Reference) 
				int getYearOfPublication() const; // returns the year of publication  of the (object instance of the class Reference) 
				string getAuthor() const; // returns the author of the (object instance of the class Reference) 
				string getTitle() const ; // returns the title of the (object instance of the class Reference) 
				void print () const; //prints a string representation of this Reference consisting of the id number, reference title, author and year of publication; 
			    
				// the following methods are not asked but needed for the test of the previous methods and for the rest of the project
				void setId(int) ; // prototype of the setIdentifier function . Sets the reference's identifier
				void setYearOfPublication (int); // prototype of the setYearOfPublication function . Sets the reference's year of publication
				void setAuthor (string); // prototype of the setAuthor function . Sets the reference's author
				void setTitle (string); // Sets the reference's's title

			
			
		protected: // deals with the ATTRIBUTES of the object instance of the class Reference : the DATA MEMBERS can cot be accessed outside the class (the data are ecapsulated or hidden)
			    int Identifier ;   // which is unique for each (object instance of the class Reference)
                int YearOfPublication;  // which is unique for each (object instance of the class Reference) 
				string Title; //  which is unique for each (object instance of the class Reference) 
				string Author; //  which is unique for each (object instance of the class Reference) 
				
 }; // end class CourseSection

#endif    
